Computing components, such as computing devices, applications, and other software, send messages to one another. There is often a need to prevent the messages from being read by third parties that may intercept the messages in route. This need arises, for example, when the messages traverse a network, such as the Internet, that is accessible to third parties.
Typically, a sending computing component and a receiving computing component will both possess shared secret data. The sending computing component uses the shared secret data to encode a message to generate an encoded message. The sending computing component sends the encoded message to the receiving computing component. The receiving computing component uses the shared secret data to decode the encoded message. The encoded message may be very difficult to decode without the shared secret data, which may deter or prevent unauthorized parties from decoding the message even if it is intercepted.